import { getToken, setToken, removeToken } from '@/utils/auth';
import { login, getInfo } from '@/api/user';
// import { resolve } from 'core-js/fn/promise';
//存储用户信息，这里可以存储用户名，头像，权限等，根据项目需求来先行定义令牌和角色
const state = {
    token: getToken(),
    roles: [],
}


const mutations = {
    SET_TOKEN: (state, token) => {
        state.token = token;
    },
    SET_ROLES: (state, roles) => {
        state.roles = roles;
    }
}

const actions = {
    // 登录
    login({ commit }, userInfo) {
        const { username } = userInfo;
        //模拟登录
        // return new Promise((resolve, reject) => {
        //     setTimeout(()=>{
        //         if(username === 'admin' || username === 'zhj'){
        //             commit('SET_TOKEN', username);
        //             setToken(username);
        //             resolve()
        //         }else{
        //             reject('用户名不存在或密码错误')
        //         }
        //         }, 1000)
        //     }
        // )

        //使用api接口进行登录
        return login(username).then(res => {
            commit('SET_TOKEN', res.data);
            setToken(res.data);
        })
    },       
    //获取用户角色等信息
    getInfo({ commit, state }) {
        //模拟获取用户角色信息
        // return new Promise((resolve) => {
        //     setTimeout(()=>{
        //         const roles = state.token === 'admin' ? ['admin'] : ['editor'];
        //         commit('SET_ROLES', roles);
        //         resolve({ roles })
        //         }, 1000)
        //     }
        // )
        //使用api接口进行获取用户角色信息
        return getInfo(state.token).then(({data:roles}) => {
            commit('SET_ROLES', roles);
            return { roles }
        })
    },
    //重置令牌
    resetToken({ commit }) {
        return new Promise(resolve=>{
            commit('SET_TOKEN', '');
            commit('SET_ROLES', []);
            removeToken();
            resolve()
        })
    }
}

export default {
    namespaced: true,
    state,
    mutations,
    actions
}

